<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <script>

        /**
        ES6 提供了新的数据结构 Set。它类似于数组，但是成员的值都是唯一的，没有重复的值。
        Set 本身是一个构造函数，用来生成 Set 数据结构。
        - size属性
        `Set.prototype.size`：返回Set实例的成员总数。array.length
        - size 方法
        `Set.prototype.add(value)`：添加某个值，返回 Set 结构本身。
        `Set.prototype.delete(value)`：删除某个值，返回一个布尔值，表示删除是否成功。 // 删除成功 返回true 否则 false
        `Set.prototype.has(value)`：返回一个布尔值，表示该值是否为Set的成员。
        `Set.prototype.clear()`：清除 清空set数据结构
        **/
        
        var set1 = new Set();
        console.log(set1);
        
        var set2 = new Set([1, 2, 3, 4, 3, 3, 3]);
        console.log(set2);

        // 使用forEach forof 来遍历
        set2.forEach((ele, sameEle, set) => {
            console.log(ele, '=======', sameEle);
        })

        for (var i of set2) {
            console.log(i);
        }
        
        // set结构的操作
        // add
        console.log(set2.add('2'));
        // delete
        console.log(set2.delete('2'));
        console.log(set2);
        // has
        console.log(set2.has('2'));
        // clear
        set2.clear();
        console.log(set2);

        // 数组去重
        var arr = Array.from(new Set([23,33,33,33,444,12]));
        console.log(arr);

    </script>
</body>
</html>